import {DirectionTypeMap} from "@/common/map";
import {PageStatus} from "@/uni_modules/u-scroller/components/u-scroller/types";

export default defineComponent({
    props: {
        // 滚动方向
        direction: {
            type: String as PropType<DirectionType>,
            default: "vertical",
            validator: (value: string): boolean =>
            {
                return DirectionTypeMap.includes(value);
            }
        },
        // 是否禁用滚动条
        disableScroller: {
            type: Boolean,
            default: false
        },
        // 开启下拉刷新
        enableRefresh: {
            type: Boolean,
            default: true
        },
        // 在设置滚动条位置时使用动画过渡
        scrollWithAnimation: {
            type: Boolean,
            default: true
        },
        // 距顶部、左边多远时，触发scrolltoupper事件（单位：px）
        upperThreshold: {
            type: [String, Number],
            default: 50
        },
        // 距底部、右边多远时，触发scrolltolower事件（单位：px）
        lowerThreshold: {
            type: [String, Number],
            default: 50
        },
        // 显示滚动条
        showScrollbar: {
            type: Boolean,
            default: false
        },
        // 双击顶部状态栏时，是否自动滚动到顶部
        enableBackToTop: {
            type: Boolean,
            default: false
        },
        // 启用flexbox布局，开启后，当前节点声明了display: flex，子元素默认为flex子元素，否则为block元素
        enableFlex: {
            type: Boolean,
            default: false
        },
        // 开启scroll anchoring特性，即控制滚动位置不随内容变化而抖动，仅在IOS下生效，安卓下可参考 CSS overflow-anchor属性
        scrollAnchoring: {
            type: Boolean,
            default: false
        },
        // 加载区域高度（触发点，单位：px）
        offset: {
            type: Number,
            default: 60
        },
        // 加载区域背景颜色
        loadingBackgroundColor: {
            type: String,
            default: "#f5f5f5"
        },
        // 显示加载区域（这里给配置主要是配合自定义加载区域插槽使用，因为小程序的机制问题，所以不得不这样做）
        showRefreshing: {
            type: Boolean,
            default: true
        },
        // 最大可下拉距离（单位：px）
        maxPull: {
            type: Number,
            default: 160
        },
        // 粘滞力系数（0-100，粘滞力越大，下拉拖拽刷新阻力越大）
        viscosity: {
            type: Number,
            default: 50
        },
        // 动画时长（单位：ms）
        duration: {
            type: Number,
            default: 300
        },
        // 未激活Loading圆环颜色
        inactiveLoadingIconColor: {
            type: String,
            default: "rgba(0, 0, 0, 0.08)"
        },
        // 激活Loading圆环颜色
        activeLoadingIconColor: {
            type: String,
            default: "rgba(90, 199, 37, 1)"
        },
        // 页脚提示状态
        pageStatus: {
            type: String as PropType<PageStatus>,
            default: "none"
        },
        // 内容区域间距【上->右->下->左】（单位：px）
        spacing: {
            type: [String, Number, Array] as PropType<string | number | Array<string | number>>,
            default: 10
        },
        // 最大宽度
        maxWidth: {
            type: [String, Number],
            default: ""
        },
        // 最大高度
        maxHeight: {
            type: [String, Number],
            default: ""
        },
        // 使用自定义页脚Loading插槽
        useCustomPageLoading: {
            type: Boolean,
            default: false
        },
        // 使用自定义页脚暂无更多数据插槽
        useCustomPageNoMore: {
            type: Boolean,
            default: false
        },
        // 使用自定义页脚默认状态插槽
        useCustomPageNone: {
            type: Boolean,
            default: false
        },
        // 使用自定义页脚空数据状态插槽
        useCustomPageEmpty: {
            type: Boolean,
            default: false
        },
        // 是否阻止事件传播
        stop: {
            type: Boolean,
            default: false
        },
        // 是否阻止事件默认行为
        prevent: {
            type: Boolean,
            default: false
        }
    }
});